Collections

Lilv has several collection types for holding various types of value. Each collection type supports a similar basic API, except LilvPlugins which is internal and thus lacks a free function:

  • void PREFIX_free (coll)

  • unsigned PREFIX_size (coll)

  • LilvIter* PREFIX_begin (coll)

The types of collection are:

  • LilvPlugins, with function prefix lilv_plugins_.

  • LilvPluginClasses, with function prefix lilv_plugin_classes_.

  • LilvScalePoints, with function prefix lilv_scale_points_.

  • LilvNodes, with function prefix lilv_nodes_.

  • LilvUIs, with function prefix lilv_uis_.

const LilvPluginClass *lilv_plugin_classes_get_by_uri(const LilvPluginClasses *classes, const LilvNode *uri)

Get a plugin class from classes by URI.

Return value is shared (stored in classes) and must not be freed or modified by the caller in any way.

Returns

NULL if no plugin class with uri is found in classes.

const LilvUI *lilv_uis_get_by_uri(const LilvUIs *uis, const LilvNode *uri)

Get a UI from uis by URI.

Return value is shared (stored in uis) and must not be freed or modified by the caller in any way.

Returns

NULL if no UI with uri is found in list.

bool lilv_nodes_contains(const LilvNodes *nodes, const LilvNode *value)

Return whether values contains value.

LilvNodes *lilv_nodes_merge(const LilvNodes *a, const LilvNodes *b)

Return a new LilvNodes that contains all nodes from both a and b.

const LilvPlugin *lilv_plugins_get_by_uri(const LilvPlugins *plugins, const LilvNode *uri)

Get a plugin from plugins by URI.

Return value is shared (stored in plugins) and must not be freed or modified by the caller in any way.

Returns

NULL if no plugin with uri is found in plugins.

LILV_FOREACH(colltype, iter, collection)

Iterate over each element of a collection.

LILV_FOREACH(plugin_classes, i, classes) {
   LilvPluginClass c = lilv_plugin_classes_get(classes, i);
   // ...
}